package site.shihuan.helpdesk.auth.dao;

import org.springframework.stereotype.Repository;
import site.shihuan.helpdesk.auth.model.po.AuthDeptPO;
import site.shihuan.helpdesk.auth.model.vo.DeptVO;

import java.util.List;

/**
 * 部门(AuthDept)表数据库访问层
 *
 * @author 周世焕
 * @since 2021-03-24 19:59:38
 */
@Repository
public interface AuthDeptDao {

    /**
     * 通过主键查询单条数据
     *
     * @param deptId
     * @return 影响行数
     */
    AuthDeptPO selectByPrimaryKey(String deptId);

    /**
     * 新增数据
     *
     * @param authDept 实例对象
     * @return 影响行数
     */
    int insert(AuthDeptPO authDept);

    /**
     * 新增数据（可选字段）
     *
     * @param authDept 实例对象
     * @return 影响行数
     */
    int insertSelective(AuthDeptPO authDept);

    /**
     * 修改数据
     *
     * @param authDept 实例对象
     * @return 影响行数
     */
    int updateByPrimaryKey(AuthDeptPO authDept);

    /**
     * 修改数据(可选字段)
     *
     * @param authDept 实例对象
     * @return 影响行数
     */
    int updateByPrimaryKeySelective(AuthDeptPO authDept);

    /**
     * 通过主键删除数据
     *
     * @param deptId
     * @return 影响行数
     */
    int deleteByPrimaryKey(String deptId);

    /**
     * 查询部门列表
     * @param tenantId
     * @return
     */
    List<DeptVO> selectByTenant(String tenantId);

    /**
     * 修改数据
     *
     * @param authDept 实例对象
     * @return 影响行数
     */
    int updateByTenantAndDept(AuthDeptPO authDept);

    /**
     * 删除部门
     * @param tenantId
     * @param deptIds
     * @return
     */
    int deleteByTenantAndDeptBatch(String tenantId, String[] deptIds);
}
